# 函数对象 函数名就是内存地址
# 函数可以作为变量进行赋值、传参 变量名=内存地址（函数名）
def func1():
    print("func1")


def func2(x):
    x();


f = func1
f()  # 赋值后使用变量名()调用函数
func2(f)  # 将函数内存地址作为参数传递


# 案例 通过字典 实现switch选择
def login():
    print("登录成功")


def logout():
    print("退出成功")


def transfer():
    print("转账")


def check():
    print("检查余额")


func_dic = {
    "0": ["登录", login],
    "1": ["退出", logout],
    "2": ["转账", transfer],
    "3": ["检查余额", check]
}
while True:
    for f in func_dic:
        print(f," ",func_dic[f][0])
    choice = input("请输入数字选择功能:").strip()
    if not choice.isdigit():
        print("必须输入数字!!")
        continue
    if choice == '1' or choice is None:
        break
    if choice not in func_dic:
        print("输入错误，没有此功能")
        continue
    else:
        func_dic[choice][1]()


        
